/**
 * 用户Store
 * 提供用户信息管理
 */

// 创建用户Store
const userStore = {
  // 状态定义
  user: null,
  isLogin: false,
  isAdmin: false,
  
  // 初始化方法 - app.js需要调用此方法
  init() {
    console.log('userStore.init方法被调用');
    try {
      // 检查是否有登录信息
      const userInfo = wx.getStorageSync('userInfo');
      if (userInfo) {
        this.user = userInfo;
        this.isLogin = true;
        this.isAdmin = userInfo.role === 'admin';
      }
      return true;
    } catch (error) {
      console.error('初始化用户状态失败', error);
      return false;
    }
  },
  
  // 行为方法
  async getUserInfo() {
    try {
      if (this.user) return this.user;
      
      // 尝试从存储获取用户信息
      const userInfo = wx.getStorageSync('userInfo');
      if (userInfo) {
        this.user = userInfo;
        this.isLogin = true;
        this.isAdmin = userInfo.role === 'admin';
        return this.user;
      }
      
      // 如果没有缓存的用户信息，创建默认用户（通常不会执行到这里）
      this.user = {
        id: 'user-001',
        name: '测试用户',
        role: 'user', // 普通用户角色
        avatar: ''
      };
      this.isLogin = true;
      this.isAdmin = false;
      
      return this.user;
    } catch (error) {
      console.error('获取用户信息失败', error);
      return null;
    }
  },
  
  // 登录方法
  async login(params) {
    try {
      await this.getUserInfo();
      return this.user;
    } catch (error) {
      console.error('登录失败', error);
      return null;
    }
  },
  
  // 退出登录
  async logout() {
    try {
      this.user = null;
      this.isLogin = false;
      this.isAdmin = false;
      wx.removeStorageSync('userInfo');
      return true;
    } catch (error) {
      console.error('退出登录失败', error);
      return false;
    }
  }
};

// 导出Store
module.exports = userStore; 